package com.sptus.framework.utils;

import com.sptus.system.domain.DevDictionaries;

import java.util.*;

public class CustomSortExample<T> {

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    // 定义你的排序规则（顺序越靠前的元素优先级越高）
    private static final List<String> CUSTOM_ORDER;
    private static final Map<String, Integer> ORDER_MAP = new HashMap<>();
    static {
        CUSTOM_ORDER = new ArrayList<>();
        CUSTOM_ORDER.add("BCP");
        CUSTOM_ORDER.add("BV");
        CUSTOM_ORDER.add("SV1");
        CUSTOM_ORDER.add("SV2");
        CUSTOM_ORDER.add("SL");
    }

    static {
        // 初始化顺序映射，便于快速查找优先级
        for (int i = 0; i < CUSTOM_ORDER.size(); i++) {
            ORDER_MAP.put(CUSTOM_ORDER.get(i), i);
        }
    }

    public static List<DevDictionaries> sort(List<DevDictionaries> devDictionaries){
        Comparator<DevDictionaries> comparator = (o1, o2) -> {
            Map<String, Integer> ORDER_MAP = new HashMap<>();
            String code1 = o1.getCode();
            String code2 = o2.getCode();
            // 获取优先级，未定义的返回最大值使其排在最后
            int order1 = ORDER_MAP.getOrDefault(code1, Integer.MAX_VALUE);
            int order2 = ORDER_MAP.getOrDefault(code2, Integer.MAX_VALUE);
            return Integer.compare(order1, order2);
        };
        // 执行排序
      // 如果原列表不可变，需新建可修改列表
        Collections.sort(devDictionaries, comparator);
        return devDictionaries;
    }

    // 假设你的对象类如下（替换为你实际的类名和属性）



}